import os
import re
import shutil


def get_image_from_md(md_file_path):
    # 读取Markdown文件内容
    with open(md_file_path, 'r', encoding='utf-8') as file:
        md_content = file.read()

    # 使用正则表达式提取Markdown文件中的图片链接（包括HTML格式的图片标签）
    image_pattern = re.compile(r'<img.*?src="(.*?)"|!\[.*?\]\((.*?)\)')
    image_links = []
    for match in image_pattern.finditer(md_content):
        img_src = match.group(1) or match.group(2)
        if img_src:
            image_links.append(img_src)

    # 获取Markdown文件所在的目录
    md_dir = os.path.dirname(os.path.abspath(md_file_path))
    img_dir = os.path.join(md_dir, 'img')

    # 检查img目录是否存在
    if not os.path.exists(img_dir):
        print(f"img目录{img_dir}不存在。")
        return []

    # 查找对应的图片文件
    image_files = []
    for link in image_links:
        image_name = os.path.basename(link)
        image_path = os.path.join(img_dir, image_name)
        if os.path.exists(image_path):
            image_files.append(image_path)
        else:
            print(f"图片{image_name}未在{img_dir}中找到。")

    return image_files


def copy_images_to_out(image_files):
    # 创建out目录，如果不存在
    out_dir = 'out'
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)

    for image in image_files:
        image_name = os.path.basename(image)
        destination = os.path.join(out_dir, image_name)
        try:
            shutil.copy2(image, destination)
            print(f"已将{image}拷贝到{destination}")
        except shutil.Error as e:
            print(f"拷贝{image}时出错: {e}")


# 示例使用
md_file = r'F:\aaworkspace\zmo_git_space\note\04-take_photograph\1-lrc-learn.md'  # 替换为实际的Markdown文件路径

images = get_image_from_md(md_file)
if images:
    copy_images_to_out(images)
else:
    print("未找到图片文件，无法进行拷贝操作。")